// 接口(interface)
// 约束对象的结构,对有类型的数据做类型约束
// 一个对象要实现接口就必须要拥有接口中约束的所有成员
// 在实际运行阶段接口不会有任何意义

interface Post {
    title: string
    content: string
    // 可选成员
    subTitle?: string
    // 只读成员,定义以后无法修改
    readonly summary: string

}
function printPost(post: Post) {
    console.log(post.title);
    console.log(post.content);
    console.log(post.subTitle);
}
printPost({
    title: 'interface',
    content: '必须具备接口约束的所有成员',
    summary: '我是只读成员'
})

// 动态成员
// 属性名并不是写死的
interface Cache {
    // 动态成员属性名为字符串类型,值也为字符串类型
    [prop: string]: string
}
const cache: Cache = {}
cache.foo = 'foo'
cache.bar = 'bar'
console.log(cache);
export { }